const express = require("express");
const bodyParser = require("body-parser");
// 引入链接数据库模块
const db = require("./db/index");
// 引入模型对象 Students
const Students = require("./models/studentsSchema");
const app = express();
// 解析请求体的参数，将其挂载到req.body
app.use(
  bodyParser.urlencoded({
    extended: true
  })
);
// 连接数据库  只执行1次  放到db文件夹中
// 创建约束对象   schema  model  models  一个数据库中的集合可以有无数个  每一个集合都应该有一个约束对象

// 数据库增删改 路由 get post 提交数据 根据前台提交的数据进行增删改查
app.post("/stuInfo", async (req, res) => {
  // 通过post请求获取学生信息，存放到数据库
  // post请求的数据   req.body中
  // console.log(req.body);
  await db;
  const student = req.body;
  const result = await Students.create(student);
  console.log(result);
  res.send("数据提交成功！！");
});
app.get("/stuSearch", async (req, res) => {
  await db;
  const { name } = req.query;
  // 查询数据
  const result = await Students.find({
    name
  });
  console.log(result);
  res.send("xx");
});
// 更新  有新的数据 服务器从前台得到新数据   再从数据库中查找对应的数据  进行更新
// post
app.post("/stuUpdate", async (req, res) => {
  // 连接数据库
  await db;
  console.log(req.body);
  //   服务器从前台得到新数据
  const student = req.body;
  const stu_id = student.stu_id;
  //   db.集合名.updateOne(查询条件，更新对象[,配置对象])；
  const result = await Students.update({ stu_id }, { $set: { age: 20 } });
  console.log(result);

  /* 
 1.连接数据库
 2.从浏览器获取新数据
 3.找到查询的匹配条件
 4.更新操作 
 
 */

  res.send("xxxyyy");
});

// 删除  使用param参数，在路径后面需要有占位符
app.get("/stuDel/:stu_id", async (req, res) => {
  await db;
  // 获取param参数为req.params
  console.log(req.params);
  const { stu_id } = req.params;
  // 进行删除操作
  const result = await Students.deleteOne({ stu_id });
  console.log(result);

  res.send("删除成功！！");
});
app.listen(8080, err => {
  if (!err) console.log("server启动");
  else console.log(err);
});
